 1.数据仓库理论之数据仓库建模方法
   
   数据模型就是数据组织和存储方法，它强调从业务、数据存取和使用角度合理存储数
据。有了适合业务和基础数据存储环境的模型，能获得以下好处：
    1).性能：良好的数据模型能帮助我们快速查询所需要的数据，减少数据的I/O吞吐
    2).成本：良好的数据模型能极大地减少不必要的数据冗余，也能实现计算结果复
用，极大地降低大数据系统中的存储和计算成本
    3).效率：良好的数据模型能极大地改善用户使用数据的体验，提高使用数据的效率
    4).质量：良好的数据模型能改善数据统计口径的不一致性，减少数据计算错误的可
能性
   
  大数据系统需要数据模型方法来帮助更好地组织和存储数据，以便在性能、成本、效
率和质量之间取得最佳平衡。
 
 2.数据仓库理论之数据仓库建模方法中ER模型
   
   数据仓库之父Bill Inmon提出的建模方法是从全企业的高度设计一个3NF模型，用实
体关系(Entity Relationship, ER)模型描述企业业务，在范式理论上符合3NF。数据仓
库中的3NF与OLTP系统中的3NF 的区别在于，它是站在企业角度面向主题的抽象，而不
是针对某个具体业务流程的实体对象关系的抽象。其具有以下几个特点：
    1).需要全面了解整个企业业务和数据
    2).实施周期非常长
    3).对建模人员的能力要求非常高
   
   釆用ER模型建设数据仓库模型的出发点是整合数据，将各个系统中的数据以整个企
业角度按主题进行相似性组合和合并，并进行一致性处理，为数据分析决策服务，但
是并不能直接用于分析决策。其建模步骤分为三个阶段：
    1).高层模型：一个高度抽象的模型，描述主要的主题以及主题间的关系，用于描述
企业的业务总体概况
    2).中层模型：在高层模型的基础上，细化主题的数据项
    3).物理模型(也叫底层模型)：在中层模型的基础上，考虑物理存储，同时基于性能
和平台特点进行物理属性的设计，也可能做一 些表的合并、分区的设计等
 
 3.数据仓库理论之数据仓库建模方法中维度模型
   
   维度模型是数据仓库领域的Ralph Kimball大师所倡导的，他的《数据仓库工具箱》是
数据仓库工程领域最流行的数据仓库建模经典。
   
   维度建模从分析决策的需求出发构建模型，为分析需求服务，重点关注用户如何更快
速地完成需求分析，同时具有较好的大规模复杂查询的响应性能。其典型的代表是星型模
型，以及在一些特殊场景下使用的雪花模型。其设计分为以下几个步骤：
    1).选择需要进行分析决策的业务过程。业务过程可以是：
	   (1).单个业务事件，比如交易的支付、退款等
       (2).某个事件的状态，比如当前的账户余额等
       (3).一系列相关业务事件组成的业务流程
	2).选择数据的粒度。在事件分析中，我们要预判所有分析需要细分的程度，从而决
定选择的粒度
    3).识别维表。选择好粒度之后，就需要基于此粒度设计维表，包括维度属性，用于
分析时进行分组和筛选
    4).选择事实。确定分析需要衡量的指标
	
   现代企业业务变化快、人员流动频繁、业务知识功底的不够全面，导致ER模型设计产
出周期长。大多数企业实施数据仓库的经验说明：在不太成熟、快速变化的业务面前,构
建ER模型的风险非常大，不太适合去构建ER模型。而维度建模对技术要求不高，快速上
手，敏捷迭代，快速交付；更快速完成分析需求，较好的大规模复杂查询的响应性能。
 
 4.数据仓库理论之数据仓库分层(重点难点)
   
   数据仓库更多代表的是一种对数据的管理和使用的方式，它是一整套包括了数据建模
、ETL（数据抽取、转换、加载）、作用调度等在内的完整的理论体系流程。数据仓库在
构建过程中通常都需要进行分层处理。业务不同，分层的技术处理手段也不同。
   分层的主要原因是在管理数据的时候，能对数据有一个更加清晰的掌控。详细来讲，
主要有下面几个原因：
    1).清晰的数据结构
	   每一个数据分层都有它的作用域，在使用表的时候能更方便地定位和理解。
	2).将复杂的问题简单化
	   将一个复杂的任务分解成多个步骤来完成，每一层只处理单一的问题，比较简单
和容易理解。而且便于维护数据的准确性，当数据出现问题之后，可以不用修复所有的
数据，只需要从有问题的地方开始修复。
	3).减少重复开发
	   规范数据分层，开发一些通用的中间层数据，能够减少极大的重复计算。
	4).屏蔽原始数据的异常
	   屏蔽业务的影响，不必改一次业务就需要重新接入数据。
	5).数据血缘的追踪
	   最终给业务呈现的是一个能直接使用业务表，但是它的来源很多，如果有一张来
源表出问题了，借助血缘最终能够快速准确地定位到问题，并清楚它的危害范围。
   
   数仓的常见分层一般为3层，分别为：数据操作层、数据仓库层和应用数据层(数据集
市层)。当然根据研发人员经验或者业务，可以分为更多不同的层，只要能达到流程清晰
、方便查数即可。
   
   ODS(Operation Data Store 数据准备区)。数据仓库源头系统的数据表通常会原封不
动的存储一份，这称为ODS层，也称为准备区。它们是后续数据仓库层加工数据的来源。
ODS层数据的主要来源包括：
    1).业务数据库。可使用DataX、Sqoop等工具来抽取，每天定时抽取一次；在实时应
用中，可用Canal监听MySQL的 Binlog，实时接入变更的数据；
    2).埋点日志。线上系统会打入各种日志，这些日志一般以文件的形式保存，可以用
Flume 定时抽取；
    3).其他数据源。从第三方购买的数据、或是网络爬虫抓取的数据；
   
   DW（Data Warehouse 数据仓库层）。包含DWD、DWS、DIM层，由ODS层数据加工而成。
主要完成数据加工与整合，建立一致性的维度，构建可复用的面向分析和统计的明细事实
表，以及汇总公共粒度的指标。
    1).DWD（Data Warehouse Detail 细节数据层），是业务层与数据仓库的隔离层。以
业务过程作为建模驱动，基于每个具体的业务过程特点，构建细粒度的明细层事实表。可
以结合企业的数据使用特点，将明细事实表的某些重要维度属性字段做适当冗余，也即宽
表化处理；
    2).DWS（Data Warehouse Service 服务数据层），基于DWD的基础数据，整合汇总成
分析某一个主题域的服务数据。以分析的主题为建模驱动，基于上层的应用和产品的指标
需求，构建公共粒度的汇总指标事实表；
    3).公共维度层（DIM）：基于维度建模理念思想，建立一致性维度；
    4).TMP层 ：临时层，存放计算过程中临时产生的数据；
   
   ADS（Application Data Store 应用数据层）。基于DW数据，整合汇总成主题域的服务
数据，用于提供后续的业务查询等。
   
   数据仓库层次的划分不是固定不变的，可以根据实际需求进行适当裁剪或者是添加。如
果业务相对简单和独立，可以将DWD、DWS进行合并。
   
   

	

   
  

   